/*
 * @Author: Bonnie
 * @Date: 2021-08-31 10:23:05
 * @LastEditTime: 2021-09-01 11:11:44
 * @LastEditors: Bonnie
 * @Description: 全局过滤器定义
 * @FilePath: /custom/src/filter/index.js
 * 可以输入预定的版权声明、个性签名、空行等
 */

// 全局过滤器定义
// 只需在main.js 注入以下代码即可
// import "@/filter/index.js";

// 使用方式
// 1.
// 可以在双花括号中使用过滤器： {{ new Date() | formatTime }}
// 2.也可以在 v-bind 表达式中使用过滤器：
// <div :time=" time | formatTime "></div>

import Vue from "vue";
import moment from "moment";

/**
 * 时间格式化
 * @param {*} date  number | string  手机号
 * @param {*} type  String  手机号
 */
Vue.filter("formatTime", (date = new Date(), type = "YYYY-MM-DD hh:mm:ss") => {
  return moment(date).format(type);
});

/**
 * 千分位分割，保留两位小数:
 * 1234567890.678 =>  1,234,567,890.68 (向上取整)
 *  
 * @param {*} num  Number  手机号
 */
Vue.filter("formatMoney", (val) => {
  if (!val) return "0.00";
  
  return val.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,");
});

/**
 * 电话号码过滤，173****6039
 * @param {*} val  String  手机号
 */

Vue.filter("formatTel", (val) => {
  if (!val) return;
  return val.replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2");
});

/**
 * 电话号码过滤，173****6039
 * @param {*} val  String  身份证号
 */
Vue.filter("formatIdCard", (val) => {
  if (!val) return;
  return val.replace(/^(.{6})(?:\d+)(.{4})$/, "$1*******$2");
});

/**
 * 首字母大写
 * @param {*} val  String  单词
 */
Vue.filter("formatUppercase", (val) => {
  if (!val) return "";
  val = val.toString();
  return val.charAt(0).toUpperCase() + val.slice(1);
});
